home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / QD3DGeometry.p < prev    next >
Encoding:
Text File  |  1997-08-12  |  54.0 KB  |  1,056 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DGeometry.p
  3.  
  4.      Contains:    Q3Geometry methods                                        
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.1
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1995-1997 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT QD3DGeometry;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __QD3DGEOMETRY__}
  28. {$SETC __QD3DGEOMETRY__ := 1}
  29.  
  30. {$I+}
  31. {$SETC QD3DGeometryIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __QD3D__}
  35. {$I QD3D.p}
  36. {$ENDC}
  37.  
  38. {$IFC UNDEFINED __QD3DSET__}
  39. {$I QD3DSet.p}
  40. {$ENDC}
  41.  
  42.  
  43. {$PUSH}
  44. {$ALIGN POWER}
  45. {$LibExport+}
  46.  
  47. {*****************************************************************************
  48.  **                                                                             **
  49.  **                                Geometry Routines                             **
  50.  **                                                                             **
  51.  ****************************************************************************}
  52. FUNCTION Q3Geometry_GetType(geometry: TQ3GeometryObject): LONGINT; C;
  53. FUNCTION Q3Geometry_GetAttributeSet(geometry: TQ3GeometryObject; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  54. FUNCTION Q3Geometry_SetAttributeSet(geometry: TQ3GeometryObject; attributeSet: TQ3AttributeSet): TQ3Status; C;
  55. FUNCTION Q3Geometry_Submit(geometry: TQ3GeometryObject; view: TQ3ViewObject): TQ3Status; C;
  56.  
  57.  
  58. {*****************************************************************************
  59.  **                                                                             **
  60.  **                            Box    Data Structure Definitions                     **
  61.  **                                                                             **
  62.  ****************************************************************************}
  63.  
  64. TYPE
  65.     TQ3AttributeSetArray                = ARRAY [0..5] OF TQ3AttributeSet;
  66.     TQ3AttributeSetArrayPtr                = ^TQ3AttributeSetArray;
  67.     TQ3BoxDataPtr = ^TQ3BoxData;
  68.     TQ3BoxData = RECORD
  69.         origin:                    TQ3Point3D;
  70.         orientation:            TQ3Vector3D;
  71.         majorAxis:                TQ3Vector3D;
  72.         minorAxis:                TQ3Vector3D;
  73.         faceAttributeSet:        TQ3AttributeSetArrayPtr;                {  Ordering : Left, right,      }
  74.                                                                         {               front, back,      }
  75.                                                                         {               top, bottom     }
  76.         boxAttributeSet:        TQ3AttributeSet;
  77.     END;
  78.  
  79.  
  80. {*****************************************************************************
  81.  **                                                                             **
  82.  **                                Box Routines                                 **
  83.  **                                                                             **
  84.  ****************************************************************************}
  85. FUNCTION Q3Box_New({CONST}VAR boxData: TQ3BoxData): TQ3GeometryObject; C;
  86. FUNCTION Q3Box_Submit({CONST}VAR boxData: TQ3BoxData; view: TQ3ViewObject): TQ3Status; C;
  87. FUNCTION Q3Box_SetData(box: TQ3GeometryObject; {CONST}VAR boxData: TQ3BoxData): TQ3Status; C;
  88. FUNCTION Q3Box_GetData(box: TQ3GeometryObject; VAR boxData: TQ3BoxData): TQ3Status; C;
  89. FUNCTION Q3Box_EmptyData(VAR boxData: TQ3BoxData): TQ3Status; C;
  90. FUNCTION Q3Box_SetOrigin(box: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  91. FUNCTION Q3Box_SetOrientation(box: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  92. FUNCTION Q3Box_SetMajorAxis(box: TQ3GeometryObject; {CONST}VAR majorAxis: TQ3Vector3D): TQ3Status; C;
  93. FUNCTION Q3Box_SetMinorAxis(box: TQ3GeometryObject; {CONST}VAR minorAxis: TQ3Vector3D): TQ3Status; C;
  94. FUNCTION Q3Box_GetOrigin(box: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  95. FUNCTION Q3Box_GetOrientation(box: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  96. FUNCTION Q3Box_GetMajorAxis(box: TQ3GeometryObject; VAR majorAxis: TQ3Vector3D): TQ3Status; C;
  97. FUNCTION Q3Box_GetMinorAxis(box: TQ3GeometryObject; VAR minorAxis: TQ3Vector3D): TQ3Status; C;
  98. FUNCTION Q3Box_GetFaceAttributeSet(box: TQ3GeometryObject; faceIndex: LONGINT; VAR faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  99. FUNCTION Q3Box_SetFaceAttributeSet(box: TQ3GeometryObject; faceIndex: LONGINT; faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  100.  
  101.  
  102. {*****************************************************************************
  103.  **                                                                             **
  104.  **                        Cone Data Structure Definitions                          **
  105.  **                                                                             **
  106.  ****************************************************************************}
  107.  
  108. TYPE
  109.     TQ3ConeDataPtr = ^TQ3ConeData;
  110.     TQ3ConeData = RECORD
  111.         origin:                    TQ3Point3D;
  112.         orientation:            TQ3Vector3D;
  113.         majorRadius:            TQ3Vector3D;
  114.         minorRadius:            TQ3Vector3D;
  115.         uMin:                    Single;
  116.         uMax:                    Single;
  117.         vMin:                    Single;
  118.         vMax:                    Single;
  119.         caps:                    TQ3EndCap;
  120.         interiorAttributeSet:    TQ3AttributeSet;
  121.         faceAttributeSet:        TQ3AttributeSet;
  122.         bottomAttributeSet:        TQ3AttributeSet;
  123.         coneAttributeSet:        TQ3AttributeSet;
  124.     END;
  125.  
  126. {*****************************************************************************
  127.  **                                                                             **
  128.  **                                Cone Routines                                 **
  129.  **                                                                             **
  130.  ****************************************************************************}
  131. FUNCTION Q3Cone_New({CONST}VAR coneData: TQ3ConeData): TQ3GeometryObject; C;
  132. FUNCTION Q3Cone_Submit({CONST}VAR coneData: TQ3ConeData; view: TQ3ViewObject): TQ3Status; C;
  133. FUNCTION Q3Cone_SetData(cone: TQ3GeometryObject; {CONST}VAR coneData: TQ3ConeData): TQ3Status; C;
  134. FUNCTION Q3Cone_GetData(cone: TQ3GeometryObject; VAR coneData: TQ3ConeData): TQ3Status; C;
  135. FUNCTION Q3Cone_SetOrigin(cone: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  136. FUNCTION Q3Cone_SetOrientation(cone: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  137. FUNCTION Q3Cone_SetMajorRadius(cone: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  138. FUNCTION Q3Cone_SetMinorRadius(cone: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  139. FUNCTION Q3Cone_GetOrigin(cone: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  140. FUNCTION Q3Cone_GetOrientation(cone: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  141. FUNCTION Q3Cone_GetMajorRadius(cone: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  142. FUNCTION Q3Cone_GetMinorRadius(cone: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  143. FUNCTION Q3Cone_SetCaps(cone: TQ3GeometryObject; caps: TQ3EndCap): TQ3Status; C;
  144. FUNCTION Q3Cone_GetCaps(cone: TQ3GeometryObject; VAR caps: TQ3EndCap): TQ3Status; C;
  145. FUNCTION Q3Cone_SetBottomAttributeSet(cone: TQ3GeometryObject; bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  146. FUNCTION Q3Cone_GetBottomAttributeSet(cone: TQ3GeometryObject; VAR bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  147. FUNCTION Q3Cone_SetFaceAttributeSet(cone: TQ3GeometryObject; faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  148. FUNCTION Q3Cone_GetFaceAttributeSet(cone: TQ3GeometryObject; VAR faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  149. FUNCTION Q3Cone_EmptyData(VAR coneData: TQ3ConeData): TQ3Status; C;
  150.  
  151.  
  152.  
  153. {*****************************************************************************
  154.  **                                                                             **
  155.  **                        Cylinder Data Structure Definitions                     **
  156.  **                                                                             **
  157.  ****************************************************************************}
  158.  
  159. TYPE
  160.     TQ3CylinderDataPtr = ^TQ3CylinderData;
  161.     TQ3CylinderData = RECORD
  162.         origin:                    TQ3Point3D;
  163.         orientation:            TQ3Vector3D;
  164.         majorRadius:            TQ3Vector3D;
  165.         minorRadius:            TQ3Vector3D;
  166.         uMin:                    Single;
  167.         uMax:                    Single;
  168.         vMin:                    Single;
  169.         vMax:                    Single;
  170.         caps:                    TQ3EndCap;
  171.         interiorAttributeSet:    TQ3AttributeSet;
  172.         topAttributeSet:        TQ3AttributeSet;
  173.         faceAttributeSet:        TQ3AttributeSet;
  174.         bottomAttributeSet:        TQ3AttributeSet;
  175.         cylinderAttributeSet:    TQ3AttributeSet;
  176.     END;
  177.  
  178. {*****************************************************************************
  179.  **                                                                             **
  180.  **                            Cylinder Routines                                 **
  181.  **                                                                             **
  182.  ****************************************************************************}
  183. FUNCTION Q3Cylinder_New({CONST}VAR cylinderData: TQ3CylinderData): TQ3GeometryObject; C;
  184. FUNCTION Q3Cylinder_Submit({CONST}VAR cylinderData: TQ3CylinderData; view: TQ3ViewObject): TQ3Status; C;
  185. FUNCTION Q3Cylinder_SetData(cylinder: TQ3GeometryObject; {CONST}VAR cylinderData: TQ3CylinderData): TQ3Status; C;
  186. FUNCTION Q3Cylinder_GetData(cylinder: TQ3GeometryObject; VAR cylinderData: TQ3CylinderData): TQ3Status; C;
  187. FUNCTION Q3Cylinder_SetOrigin(cylinder: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  188. FUNCTION Q3Cylinder_SetOrientation(cylinder: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  189. FUNCTION Q3Cylinder_SetMajorRadius(cylinder: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  190. FUNCTION Q3Cylinder_SetMinorRadius(cylinder: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  191. FUNCTION Q3Cylinder_GetOrigin(cylinder: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  192. FUNCTION Q3Cylinder_GetOrientation(cylinder: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  193. FUNCTION Q3Cylinder_GetMajorRadius(cylinder: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  194. FUNCTION Q3Cylinder_GetMinorRadius(cylinder: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  195.  
  196. FUNCTION Q3Cylinder_SetCaps(cylinder: TQ3GeometryObject; caps: TQ3EndCap): TQ3Status; C;
  197. FUNCTION Q3Cylinder_GetCaps(cylinder: TQ3GeometryObject; VAR caps: TQ3EndCap): TQ3Status; C;
  198.  
  199. FUNCTION Q3Cylinder_SetTopAttributeSet(cylinder: TQ3GeometryObject; topAttributeSet: TQ3AttributeSet): TQ3Status; C;
  200. FUNCTION Q3Cylinder_GetTopAttributeSet(cylinder: TQ3GeometryObject; VAR topAttributeSet: TQ3AttributeSet): TQ3Status; C;
  201. FUNCTION Q3Cylinder_SetBottomAttributeSet(cylinder: TQ3GeometryObject; bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  202. FUNCTION Q3Cylinder_GetBottomAttributeSet(cylinder: TQ3GeometryObject; VAR bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  203. FUNCTION Q3Cylinder_SetFaceAttributeSet(cylinder: TQ3GeometryObject; faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  204. FUNCTION Q3Cylinder_GetFaceAttributeSet(cylinder: TQ3GeometryObject; VAR faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  205. FUNCTION Q3Cylinder_EmptyData(VAR cylinderData: TQ3CylinderData): TQ3Status; C;
  206.  
  207.  
  208.  
  209. {*****************************************************************************
  210.  **                                                                             **
  211.  **                        Disk Data Structure Definitions                         **
  212.  **                                                                             **
  213.  ****************************************************************************}
  214.  
  215. TYPE
  216.     TQ3DiskDataPtr = ^TQ3DiskData;
  217.     TQ3DiskData = RECORD
  218.         origin:                    TQ3Point3D;
  219.         majorRadius:            TQ3Vector3D;
  220.         minorRadius:            TQ3Vector3D;
  221.         uMin:                    Single;
  222.         uMax:                    Single;
  223.         vMin:                    Single;
  224.         vMax:                    Single;
  225.         diskAttributeSet:        TQ3AttributeSet;
  226.     END;
  227.  
  228. {*****************************************************************************
  229.  **                                                                             **
  230.  **                                Disk Routines                                  **
  231.  **                                                                             **
  232.  ****************************************************************************}
  233. FUNCTION Q3Disk_New({CONST}VAR diskData: TQ3DiskData): TQ3GeometryObject; C;
  234. FUNCTION Q3Disk_Submit({CONST}VAR diskData: TQ3DiskData; view: TQ3ViewObject): TQ3Status; C;
  235. FUNCTION Q3Disk_SetData(disk: TQ3GeometryObject; {CONST}VAR diskData: TQ3DiskData): TQ3Status; C;
  236. FUNCTION Q3Disk_GetData(disk: TQ3GeometryObject; VAR diskData: TQ3DiskData): TQ3Status; C;
  237. FUNCTION Q3Disk_SetOrigin(disk: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  238. FUNCTION Q3Disk_SetMajorRadius(disk: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  239. FUNCTION Q3Disk_SetMinorRadius(disk: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  240. FUNCTION Q3Disk_GetOrigin(disk: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  241. FUNCTION Q3Disk_GetMajorRadius(disk: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  242. FUNCTION Q3Disk_GetMinorRadius(disk: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  243.  
  244. FUNCTION Q3Disk_EmptyData(VAR diskData: TQ3DiskData): TQ3Status; C;
  245.  
  246.  
  247.  
  248. {*****************************************************************************
  249.  **                                                                             **
  250.  **                     Ellipse Data Structure Definitions                         **
  251.  **                                                                             **
  252.  ****************************************************************************}
  253.  
  254. TYPE
  255.     TQ3EllipseDataPtr = ^TQ3EllipseData;
  256.     TQ3EllipseData = RECORD
  257.         origin:                    TQ3Point3D;
  258.         majorRadius:            TQ3Vector3D;
  259.         minorRadius:            TQ3Vector3D;
  260.         uMin:                    Single;
  261.         uMax:                    Single;
  262.         ellipseAttributeSet:    TQ3AttributeSet;
  263.     END;
  264.  
  265. {*****************************************************************************
  266.  **                                                                             **
  267.  **                                Ellipse Routines                             **
  268.  **                                                                             **
  269.  ****************************************************************************}
  270. FUNCTION Q3Ellipse_New({CONST}VAR ellipseData: TQ3EllipseData): TQ3GeometryObject; C;
  271. FUNCTION Q3Ellipse_Submit({CONST}VAR ellipseData: TQ3EllipseData; view: TQ3ViewObject): TQ3Status; C;
  272. FUNCTION Q3Ellipse_SetData(ellipse: TQ3GeometryObject; {CONST}VAR ellipseData: TQ3EllipseData): TQ3Status; C;
  273. FUNCTION Q3Ellipse_GetData(ellipse: TQ3GeometryObject; VAR ellipseData: TQ3EllipseData): TQ3Status; C;
  274. FUNCTION Q3Ellipse_SetOrigin(ellipse: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  275. FUNCTION Q3Ellipse_SetMajorRadius(ellipse: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  276. FUNCTION Q3Ellipse_SetMinorRadius(ellipse: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  277. FUNCTION Q3Ellipse_GetOrigin(ellipse: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  278. FUNCTION Q3Ellipse_GetMajorRadius(ellipse: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  279. FUNCTION Q3Ellipse_GetMinorRadius(ellipse: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  280.  
  281. FUNCTION Q3Ellipse_EmptyData(VAR ellipseData: TQ3EllipseData): TQ3Status; C;
  282.  
  283.  
  284.  
  285. {*****************************************************************************
  286.  **                                                                          **
  287.  **                            Ellipsoid Data structures                         **
  288.  **                                                                          **
  289.  ****************************************************************************}
  290.  
  291. TYPE
  292.     TQ3EllipsoidDataPtr = ^TQ3EllipsoidData;
  293.     TQ3EllipsoidData = RECORD
  294.         origin:                    TQ3Point3D;
  295.         orientation:            TQ3Vector3D;
  296.         majorRadius:            TQ3Vector3D;
  297.         minorRadius:            TQ3Vector3D;
  298.         uMin:                    Single;
  299.         uMax:                    Single;
  300.         vMin:                    Single;
  301.         vMax:                    Single;
  302.         caps:                    TQ3EndCap;
  303.         interiorAttributeSet:    TQ3AttributeSet;
  304.         ellipsoidAttributeSet:    TQ3AttributeSet;
  305.     END;
  306.  
  307. {*****************************************************************************
  308.  **                                                                          **
  309.  **                            Procedures                                        **
  310.  **                                                                          **
  311.  ****************************************************************************}
  312. FUNCTION Q3Ellipsoid_New({CONST}VAR ellipsoidData: TQ3EllipsoidData): TQ3GeometryObject; C;
  313. FUNCTION Q3Ellipsoid_Submit({CONST}VAR ellipsoidData: TQ3EllipsoidData; view: TQ3ViewObject): TQ3Status; C;
  314. FUNCTION Q3Ellipsoid_SetData(ellipsoid: TQ3GeometryObject; {CONST}VAR ellipsoidData: TQ3EllipsoidData): TQ3Status; C;
  315. FUNCTION Q3Ellipsoid_GetData(ellipsoid: TQ3GeometryObject; VAR ellipsoidData: TQ3EllipsoidData): TQ3Status; C;
  316. FUNCTION Q3Ellipsoid_SetOrigin(ellipsoid: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  317. FUNCTION Q3Ellipsoid_SetOrientation(ellipsoid: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  318. FUNCTION Q3Ellipsoid_SetMajorRadius(ellipsoid: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  319. FUNCTION Q3Ellipsoid_SetMinorRadius(ellipsoid: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  320. FUNCTION Q3Ellipsoid_GetOrigin(ellipsoid: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  321. FUNCTION Q3Ellipsoid_GetOrientation(ellipsoid: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  322. FUNCTION Q3Ellipsoid_GetMajorRadius(ellipsoid: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  323. FUNCTION Q3Ellipsoid_GetMinorRadius(ellipsoid: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  324. FUNCTION Q3Ellipsoid_EmptyData(VAR ellipsoidData: TQ3EllipsoidData): TQ3Status; C;
  325.  
  326.  
  327.  
  328. {*****************************************************************************
  329.  **                                                                             **
  330.  **                    General Polygon Data Structure Definitions                 **
  331.  **                                                                             **
  332.  ****************************************************************************}
  333.  
  334. TYPE
  335.     TQ3GeneralPolygonShapeHint     = LONGINT;
  336. CONST
  337.     kQ3GeneralPolygonShapeHintComplex = {TQ3GeneralPolygonShapeHint}0;
  338.     kQ3GeneralPolygonShapeHintConcave = {TQ3GeneralPolygonShapeHint}1;
  339.     kQ3GeneralPolygonShapeHintConvex = {TQ3GeneralPolygonShapeHint}2;
  340.  
  341.  
  342. TYPE
  343.     TQ3GeneralPolygonContourDataPtr = ^TQ3GeneralPolygonContourData;
  344.     TQ3GeneralPolygonContourData = RECORD
  345.         numVertices:            LONGINT;
  346.         vertices:                TQ3Vertex3DPtr;
  347.     END;
  348.  
  349.     TQ3GeneralPolygonDataPtr = ^TQ3GeneralPolygonData;
  350.     TQ3GeneralPolygonData = RECORD
  351.         numContours:            LONGINT;
  352.         contours:                TQ3GeneralPolygonContourDataPtr;
  353.         shapeHint:                TQ3GeneralPolygonShapeHint;
  354.         generalPolygonAttributeSet: TQ3AttributeSet;
  355.     END;
  356.  
  357. {*****************************************************************************
  358.  **                                                                             **
  359.  **                            General polygon Routines                         **
  360.  **                                                                             **
  361.  ****************************************************************************}
  362. FUNCTION Q3GeneralPolygon_New({CONST}VAR generalPolygonData: TQ3GeneralPolygonData): TQ3GeometryObject; C;
  363. FUNCTION Q3GeneralPolygon_Submit({CONST}VAR generalPolygonData: TQ3GeneralPolygonData; view: TQ3ViewObject): TQ3Status; C;
  364. FUNCTION Q3GeneralPolygon_SetData(generalPolygon: TQ3GeometryObject; {CONST}VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  365. FUNCTION Q3GeneralPolygon_GetData(polygon: TQ3GeometryObject; VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  366. FUNCTION Q3GeneralPolygon_EmptyData(VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  367. FUNCTION Q3GeneralPolygon_GetVertexPosition(generalPolygon: TQ3GeometryObject; contourIndex: LONGINT; pointIndex: LONGINT; VAR position: TQ3Point3D): TQ3Status; C;
  368. FUNCTION Q3GeneralPolygon_SetVertexPosition(generalPolygon: TQ3GeometryObject; contourIndex: LONGINT; pointIndex: LONGINT; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  369. FUNCTION Q3GeneralPolygon_GetVertexAttributeSet(generalPolygon: TQ3GeometryObject; contourIndex: LONGINT; pointIndex: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  370. FUNCTION Q3GeneralPolygon_SetVertexAttributeSet(generalPolygon: TQ3GeometryObject; contourIndex: LONGINT; pointIndex: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  371. FUNCTION Q3GeneralPolygon_SetShapeHint(generalPolygon: TQ3GeometryObject; shapeHint: TQ3GeneralPolygonShapeHint): TQ3Status; C;
  372. FUNCTION Q3GeneralPolygon_GetShapeHint(generalPolygon: TQ3GeometryObject; VAR shapeHint: TQ3GeneralPolygonShapeHint): TQ3Status; C;
  373.  
  374.  
  375.  
  376. {*****************************************************************************
  377.  **                                                                             **
  378.  **                        Line Data Structure Definitions                         **
  379.  **                                                                             **
  380.  ****************************************************************************}
  381.  
  382. TYPE
  383.     TQ3LineDataPtr = ^TQ3LineData;
  384.     TQ3LineData = RECORD
  385.         vertices:                ARRAY [0..1] OF TQ3Vertex3D;
  386.         lineAttributeSet:        TQ3AttributeSet;
  387.     END;
  388.  
  389. {*****************************************************************************
  390.  **                                                                             **
  391.  **                            Line Routines                                     **
  392.  **                                                                             **
  393.  ****************************************************************************}
  394. FUNCTION Q3Line_New({CONST}VAR lineData: TQ3LineData): TQ3GeometryObject; C;
  395. FUNCTION Q3Line_Submit({CONST}VAR lineData: TQ3LineData; view: TQ3ViewObject): TQ3Status; C;
  396. FUNCTION Q3Line_GetData(line: TQ3GeometryObject; VAR lineData: TQ3LineData): TQ3Status; C;
  397. FUNCTION Q3Line_SetData(line: TQ3GeometryObject; {CONST}VAR lineData: TQ3LineData): TQ3Status; C;
  398. FUNCTION Q3Line_GetVertexPosition(line: TQ3GeometryObject; index: LONGINT; VAR position: TQ3Point3D): TQ3Status; C;
  399. FUNCTION Q3Line_SetVertexPosition(line: TQ3GeometryObject; index: LONGINT; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  400. FUNCTION Q3Line_GetVertexAttributeSet(line: TQ3GeometryObject; index: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  401. FUNCTION Q3Line_SetVertexAttributeSet(line: TQ3GeometryObject; index: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  402. FUNCTION Q3Line_EmptyData(VAR lineData: TQ3LineData): TQ3Status; C;
  403.  
  404.  
  405.  
  406. {*****************************************************************************
  407.  **                                                                             **
  408.  **                        Marker Data Structure Definitions                     **
  409.  **                                                                             **
  410.  ****************************************************************************}
  411.  
  412. TYPE
  413.     TQ3MarkerDataPtr = ^TQ3MarkerData;
  414.     TQ3MarkerData = RECORD
  415.         location:                TQ3Point3D;
  416.         xOffset:                LONGINT;
  417.         yOffset:                LONGINT;
  418.         bitmap:                    TQ3Bitmap;
  419.         markerAttributeSet:        TQ3AttributeSet;
  420.     END;
  421.  
  422. {*****************************************************************************
  423.  **                                                                             **
  424.  **                                Marker Routines                                 **
  425.  **                                                                             **
  426.  ****************************************************************************}
  427. FUNCTION Q3Marker_New({CONST}VAR markerData: TQ3MarkerData): TQ3GeometryObject; C;
  428. FUNCTION Q3Marker_Submit({CONST}VAR markerData: TQ3MarkerData; view: TQ3ViewObject): TQ3Status; C;
  429. FUNCTION Q3Marker_SetData(geometry: TQ3GeometryObject; {CONST}VAR markerData: TQ3MarkerData): TQ3Status; C;
  430. FUNCTION Q3Marker_GetData(geometry: TQ3GeometryObject; VAR markerData: TQ3MarkerData): TQ3Status; C;
  431. FUNCTION Q3Marker_EmptyData(VAR markerData: TQ3MarkerData): TQ3Status; C;
  432. FUNCTION Q3Marker_GetPosition(marker: TQ3GeometryObject; VAR location: TQ3Point3D): TQ3Status; C;
  433. FUNCTION Q3Marker_SetPosition(marker: TQ3GeometryObject; {CONST}VAR location: TQ3Point3D): TQ3Status; C;
  434. FUNCTION Q3Marker_GetXOffset(marker: TQ3GeometryObject; VAR xOffset: LONGINT): TQ3Status; C;
  435. FUNCTION Q3Marker_SetXOffset(marker: TQ3GeometryObject; xOffset: LONGINT): TQ3Status; C;
  436. FUNCTION Q3Marker_GetYOffset(marker: TQ3GeometryObject; VAR yOffset: LONGINT): TQ3Status; C;
  437. FUNCTION Q3Marker_SetYOffset(marker: TQ3GeometryObject; yOffset: LONGINT): TQ3Status; C;
  438. FUNCTION Q3Marker_GetBitmap(marker: TQ3GeometryObject; VAR bitmap: TQ3Bitmap): TQ3Status; C;
  439. FUNCTION Q3Marker_SetBitmap(marker: TQ3GeometryObject; {CONST}VAR bitmap: TQ3Bitmap): TQ3Status; C;
  440.  
  441.  
  442.  
  443. {*****************************************************************************
  444.  **                                                                             **
  445.  **                        Mesh Data Structure Definitions                         **
  446.  **                                                                             **
  447.  ****************************************************************************}
  448.  
  449. TYPE
  450.     TQ3MeshComponent = ^LONGINT;
  451.     TQ3MeshVertex = ^LONGINT;
  452.     TQ3MeshFace = ^LONGINT;
  453.     TQ3MeshEdge = ^LONGINT;
  454.     TQ3MeshContour = ^LONGINT;
  455. {*****************************************************************************
  456.  **                                                                             **
  457.  **                            Mesh Routines                                      **
  458.  **                                                                             **
  459.  ****************************************************************************}
  460. {
  461.  *  Constructors
  462.  }
  463. FUNCTION Q3Mesh_New: TQ3GeometryObject; C;
  464. FUNCTION Q3Mesh_VertexNew(mesh: TQ3GeometryObject; {CONST}VAR vertex: TQ3Vertex3D): TQ3MeshVertex; C;
  465. FUNCTION Q3Mesh_FaceNew(mesh: TQ3GeometryObject; numVertices: LONGINT; {CONST}VAR vertices: TQ3MeshVertex; attributeSet: TQ3AttributeSet): TQ3MeshFace; C;
  466. {
  467.  *  Destructors
  468.  }
  469. FUNCTION Q3Mesh_VertexDelete(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex): TQ3Status; C;
  470. FUNCTION Q3Mesh_FaceDelete(mesh: TQ3GeometryObject; face: TQ3MeshFace): TQ3Status; C;
  471. {
  472.  * Methods
  473.  }
  474. FUNCTION Q3Mesh_DelayUpdates(mesh: TQ3GeometryObject): TQ3Status; C;
  475. FUNCTION Q3Mesh_ResumeUpdates(mesh: TQ3GeometryObject): TQ3Status; C;
  476. FUNCTION Q3Mesh_FaceToContour(mesh: TQ3GeometryObject; containerFace: TQ3MeshFace; face: TQ3MeshFace): TQ3MeshContour; C;
  477. FUNCTION Q3Mesh_ContourToFace(mesh: TQ3GeometryObject; contour: TQ3MeshContour): TQ3MeshFace; C;
  478. {
  479.  * Mesh
  480.  }
  481. FUNCTION Q3Mesh_GetNumComponents(mesh: TQ3GeometryObject; VAR numComponents: LONGINT): TQ3Status; C;
  482. FUNCTION Q3Mesh_GetNumEdges(mesh: TQ3GeometryObject; VAR numEdges: LONGINT): TQ3Status; C;
  483. FUNCTION Q3Mesh_GetNumVertices(mesh: TQ3GeometryObject; VAR numVertices: LONGINT): TQ3Status; C;
  484. FUNCTION Q3Mesh_GetNumFaces(mesh: TQ3GeometryObject; VAR numFaces: LONGINT): TQ3Status; C;
  485. FUNCTION Q3Mesh_GetNumCorners(mesh: TQ3GeometryObject; VAR numCorners: LONGINT): TQ3Status; C;
  486. FUNCTION Q3Mesh_GetOrientable(mesh: TQ3GeometryObject; VAR orientable: TQ3Boolean): TQ3Status; C;
  487. {
  488.  * Component
  489.  }
  490. FUNCTION Q3Mesh_GetComponentNumVertices(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR numVertices: LONGINT): TQ3Status; C;
  491. FUNCTION Q3Mesh_GetComponentNumEdges(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR numEdges: LONGINT): TQ3Status; C;
  492. FUNCTION Q3Mesh_GetComponentBoundingBox(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR boundingBox: TQ3BoundingBox): TQ3Status; C;
  493. FUNCTION Q3Mesh_GetComponentOrientable(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR orientable: TQ3Boolean): TQ3Status; C;
  494. {
  495.  * Vertex
  496.  }
  497. FUNCTION Q3Mesh_GetVertexCoordinates(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR coordinates: TQ3Point3D): TQ3Status; C;
  498. FUNCTION Q3Mesh_GetVertexIndex(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR index: LONGINT): TQ3Status; C;
  499. FUNCTION Q3Mesh_GetVertexOnBoundary(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR onBoundary: TQ3Boolean): TQ3Status; C;
  500. FUNCTION Q3Mesh_GetVertexComponent(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR component: TQ3MeshComponent): TQ3Status; C;
  501. FUNCTION Q3Mesh_GetVertexAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  502.  
  503. FUNCTION Q3Mesh_SetVertexCoordinates(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; {CONST}VAR coordinates: TQ3Point3D): TQ3Status; C;
  504. FUNCTION Q3Mesh_SetVertexAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; attributeSet: TQ3AttributeSet): TQ3Status; C;
  505.  
  506. {
  507.  * Face
  508.  }
  509. FUNCTION Q3Mesh_GetFaceNumVertices(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR numVertices: LONGINT): TQ3Status; C;
  510. FUNCTION Q3Mesh_GetFacePlaneEquation(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR planeEquation: TQ3PlaneEquation): TQ3Status; C;
  511. FUNCTION Q3Mesh_GetFaceNumContours(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR numContours: LONGINT): TQ3Status; C;
  512. FUNCTION Q3Mesh_GetFaceIndex(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR index: LONGINT): TQ3Status; C;
  513. FUNCTION Q3Mesh_GetFaceComponent(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR component: TQ3MeshComponent): TQ3Status; C;
  514. FUNCTION Q3Mesh_GetFaceAttributeSet(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  515.  
  516. FUNCTION Q3Mesh_SetFaceAttributeSet(mesh: TQ3GeometryObject; face: TQ3MeshFace; attributeSet: TQ3AttributeSet): TQ3Status; C;
  517. {
  518.  * Edge
  519.  }
  520. FUNCTION Q3Mesh_GetEdgeVertices(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR vertex1: TQ3MeshVertex; VAR vertex2: TQ3MeshVertex): TQ3Status; C;
  521. FUNCTION Q3Mesh_GetEdgeFaces(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR face1: TQ3MeshFace; VAR face2: TQ3MeshFace): TQ3Status; C;
  522. FUNCTION Q3Mesh_GetEdgeOnBoundary(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR onBoundary: TQ3Boolean): TQ3Status; C;
  523. FUNCTION Q3Mesh_GetEdgeComponent(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR component: TQ3MeshComponent): TQ3Status; C;
  524. FUNCTION Q3Mesh_GetEdgeAttributeSet(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  525.  
  526. FUNCTION Q3Mesh_SetEdgeAttributeSet(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; attributeSet: TQ3AttributeSet): TQ3Status; C;
  527. {
  528.  * Contour
  529.  }
  530. FUNCTION Q3Mesh_GetContourFace(mesh: TQ3GeometryObject; contour: TQ3MeshContour; VAR face: TQ3MeshFace): TQ3Status; C;
  531. FUNCTION Q3Mesh_GetContourNumVertices(mesh: TQ3GeometryObject; contour: TQ3MeshContour; VAR numVertices: LONGINT): TQ3Status; C;
  532. {
  533.  * Corner
  534.  }
  535. FUNCTION Q3Mesh_GetCornerAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; face: TQ3MeshFace; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  536. FUNCTION Q3Mesh_SetCornerAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; face: TQ3MeshFace; attributeSet: TQ3AttributeSet): TQ3Status; C;
  537.  
  538. {
  539.  * Public Mesh Iterators
  540.  }
  541.  
  542. TYPE
  543.     TQ3MeshIteratorPtr = ^TQ3MeshIterator;
  544.     TQ3MeshIterator = RECORD
  545.         var1:                    Ptr;
  546.         var2:                    Ptr;
  547.         var3:                    Ptr;
  548.         field1:                    Ptr;
  549.         field2:                    PACKED ARRAY [0..3] OF CHAR;
  550.     END;
  551.  
  552. FUNCTION Q3Mesh_FirstMeshComponent(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshComponent; C;
  553. FUNCTION Q3Mesh_NextMeshComponent(VAR iterator: TQ3MeshIterator): TQ3MeshComponent; C;
  554. FUNCTION Q3Mesh_FirstComponentVertex(component: TQ3MeshComponent; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  555. FUNCTION Q3Mesh_NextComponentVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  556. FUNCTION Q3Mesh_FirstComponentEdge(component: TQ3MeshComponent; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  557. FUNCTION Q3Mesh_NextComponentEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  558. FUNCTION Q3Mesh_FirstMeshVertex(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  559. FUNCTION Q3Mesh_NextMeshVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  560. FUNCTION Q3Mesh_FirstMeshFace(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  561. FUNCTION Q3Mesh_NextMeshFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  562. FUNCTION Q3Mesh_FirstMeshEdge(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  563. FUNCTION Q3Mesh_NextMeshEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  564. FUNCTION Q3Mesh_FirstVertexEdge(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  565. FUNCTION Q3Mesh_NextVertexEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  566. FUNCTION Q3Mesh_FirstVertexVertex(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  567. FUNCTION Q3Mesh_NextVertexVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  568. FUNCTION Q3Mesh_FirstVertexFace(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  569. FUNCTION Q3Mesh_NextVertexFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  570. FUNCTION Q3Mesh_FirstFaceEdge(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  571. FUNCTION Q3Mesh_NextFaceEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  572. FUNCTION Q3Mesh_FirstFaceVertex(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  573. FUNCTION Q3Mesh_NextFaceVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  574. FUNCTION Q3Mesh_FirstFaceFace(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  575. FUNCTION Q3Mesh_NextFaceFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  576. FUNCTION Q3Mesh_FirstFaceContour(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshContour; C;
  577. FUNCTION Q3Mesh_NextFaceContour(VAR iterator: TQ3MeshIterator): TQ3MeshContour; C;
  578. FUNCTION Q3Mesh_FirstContourEdge(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  579. FUNCTION Q3Mesh_NextContourEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  580. FUNCTION Q3Mesh_FirstContourVertex(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  581. FUNCTION Q3Mesh_NextContourVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  582. FUNCTION Q3Mesh_FirstContourFace(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  583. FUNCTION Q3Mesh_NextContourFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  584.  
  585.  
  586. {*****************************************************************************
  587.  **                                                                             **
  588.  **                            Maximum order for NURB Curves                     **
  589.  **                                                                             **
  590.  ****************************************************************************}
  591.  
  592. {*****************************************************************************
  593.  **                                                                             **
  594.  **                        NURB Data Structure Definitions                         **
  595.  **                                                                             **
  596.  ****************************************************************************}
  597.  
  598. TYPE
  599.     TQ3NURBCurveDataPtr = ^TQ3NURBCurveData;
  600.     TQ3NURBCurveData = RECORD
  601.         order:                    LONGINT;
  602.         numPoints:                LONGINT;
  603.         controlPoints:            TQ3RationalPoint4DPtr;
  604.         knots:                    ^Single;
  605.         curveAttributeSet:        TQ3AttributeSet;
  606.     END;
  607.  
  608. {*****************************************************************************
  609.  **                                                                             **
  610.  **                                NURB Curve Routines                             **
  611.  **                                                                             **
  612.  ****************************************************************************}
  613. FUNCTION Q3NURBCurve_New({CONST}VAR curveData: TQ3NURBCurveData): TQ3GeometryObject; C;
  614. FUNCTION Q3NURBCurve_Submit({CONST}VAR curveData: TQ3NURBCurveData; view: TQ3ViewObject): TQ3Status; C;
  615. FUNCTION Q3NURBCurve_SetData(curve: TQ3GeometryObject; {CONST}VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  616. FUNCTION Q3NURBCurve_GetData(curve: TQ3GeometryObject; VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  617. FUNCTION Q3NURBCurve_EmptyData(VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  618. FUNCTION Q3NURBCurve_SetControlPoint(curve: TQ3GeometryObject; pointIndex: LONGINT; {CONST}VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  619. FUNCTION Q3NURBCurve_GetControlPoint(curve: TQ3GeometryObject; pointIndex: LONGINT; VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  620. FUNCTION Q3NURBCurve_SetKnot(curve: TQ3GeometryObject; knotIndex: LONGINT; knotValue: Single): TQ3Status; C;
  621. FUNCTION Q3NURBCurve_GetKnot(curve: TQ3GeometryObject; knotIndex: LONGINT; VAR knotValue: Single): TQ3Status; C;
  622.  
  623. {*****************************************************************************
  624.  **                                                                             **
  625.  **                            Maximum NURB Patch Order                         **
  626.  **                                                                             **
  627.  ****************************************************************************}
  628. {*****************************************************************************
  629.  **                                                                             **
  630.  **                        NURB Patch Data Structure Definitions                 **
  631.  **                                                                             **
  632.  ****************************************************************************}
  633.  
  634. TYPE
  635.     TQ3NURBPatchTrimCurveDataPtr = ^TQ3NURBPatchTrimCurveData;
  636.     TQ3NURBPatchTrimCurveData = RECORD
  637.         order:                    LONGINT;
  638.         numPoints:                LONGINT;
  639.         controlPoints:            TQ3RationalPoint3DPtr;
  640.         knots:                    ^Single;
  641.     END;
  642.  
  643.     TQ3NURBPatchTrimLoopDataPtr = ^TQ3NURBPatchTrimLoopData;
  644.     TQ3NURBPatchTrimLoopData = RECORD
  645.         numTrimCurves:            LONGINT;
  646.         trimCurves:                TQ3NURBPatchTrimCurveDataPtr;
  647.     END;
  648.  
  649.     TQ3NURBPatchDataPtr = ^TQ3NURBPatchData;
  650.     TQ3NURBPatchData = RECORD
  651.         uOrder:                    LONGINT;
  652.         vOrder:                    LONGINT;
  653.         numRows:                LONGINT;
  654.         numColumns:                LONGINT;
  655.         controlPoints:            TQ3RationalPoint4DPtr;
  656.         uKnots:                    ^Single;
  657.         vKnots:                    ^Single;
  658.         numTrimLoops:            LONGINT;
  659.         trimLoops:                TQ3NURBPatchTrimLoopDataPtr;
  660.         patchAttributeSet:        TQ3AttributeSet;
  661.     END;
  662.  
  663. {*****************************************************************************
  664.  **                                                                             **
  665.  **                                NURB Patch Routines                             **
  666.  **                                                                             **
  667.  ****************************************************************************}
  668. FUNCTION Q3NURBPatch_New({CONST}VAR nurbPatchData: TQ3NURBPatchData): TQ3GeometryObject; C;
  669. FUNCTION Q3NURBPatch_Submit({CONST}VAR nurbPatchData: TQ3NURBPatchData; view: TQ3ViewObject): TQ3Status; C;
  670. FUNCTION Q3NURBPatch_SetData(nurbPatch: TQ3GeometryObject; {CONST}VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  671. FUNCTION Q3NURBPatch_GetData(nurbPatch: TQ3GeometryObject; VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  672. FUNCTION Q3NURBPatch_SetControlPoint(nurbPatch: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; {CONST}VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  673. FUNCTION Q3NURBPatch_GetControlPoint(nurbPatch: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  674. FUNCTION Q3NURBPatch_SetUKnot(nurbPatch: TQ3GeometryObject; knotIndex: LONGINT; knotValue: Single): TQ3Status; C;
  675. FUNCTION Q3NURBPatch_SetVKnot(nurbPatch: TQ3GeometryObject; knotIndex: LONGINT; knotValue: Single): TQ3Status; C;
  676. FUNCTION Q3NURBPatch_GetUKnot(nurbPatch: TQ3GeometryObject; knotIndex: LONGINT; VAR knotValue: Single): TQ3Status; C;
  677. FUNCTION Q3NURBPatch_GetVKnot(nurbPatch: TQ3GeometryObject; knotIndex: LONGINT; VAR knotValue: Single): TQ3Status; C;
  678. FUNCTION Q3NURBPatch_EmptyData(VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  679.  
  680.  
  681.  
  682. {*****************************************************************************
  683.  **                                                                             **
  684.  **                        Pixmap Marker Data Structure Definitions             **
  685.  **                                                                             **
  686.  ****************************************************************************}
  687.  
  688. TYPE
  689.     TQ3PixmapMarkerDataPtr = ^TQ3PixmapMarkerData;
  690.     TQ3PixmapMarkerData = RECORD
  691.         position:                TQ3Point3D;
  692.         xOffset:                LONGINT;
  693.         yOffset:                LONGINT;
  694.         pixmap:                    TQ3StoragePixmap;
  695.         pixmapMarkerAttributeSet: TQ3AttributeSet;
  696.     END;
  697.  
  698. {*****************************************************************************
  699.  **                                                                             **
  700.  **                                Pixmap Marker Routines                         **
  701.  **                                                                             **
  702.  ****************************************************************************}
  703. FUNCTION Q3PixmapMarker_New({CONST}VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3GeometryObject; C;
  704. FUNCTION Q3PixmapMarker_Submit({CONST}VAR pixmapMarkerData: TQ3PixmapMarkerData; view: TQ3ViewObject): TQ3Status; C;
  705. FUNCTION Q3PixmapMarker_SetData(geometry: TQ3GeometryObject; {CONST}VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3Status; C;
  706. FUNCTION Q3PixmapMarker_GetData(geometry: TQ3GeometryObject; VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3Status; C;
  707. FUNCTION Q3PixmapMarker_EmptyData(VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3Status; C;
  708. FUNCTION Q3PixmapMarker_GetPosition(pixmapMarker: TQ3GeometryObject; VAR position: TQ3Point3D): TQ3Status; C;
  709. FUNCTION Q3PixmapMarker_SetPosition(pixmapMarker: TQ3GeometryObject; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  710. FUNCTION Q3PixmapMarker_GetXOffset(pixmapMarker: TQ3GeometryObject; VAR xOffset: LONGINT): TQ3Status; C;
  711. FUNCTION Q3PixmapMarker_SetXOffset(pixmapMarker: TQ3GeometryObject; xOffset: LONGINT): TQ3Status; C;
  712. FUNCTION Q3PixmapMarker_GetYOffset(pixmapMarker: TQ3GeometryObject; VAR yOffset: LONGINT): TQ3Status; C;
  713. FUNCTION Q3PixmapMarker_SetYOffset(pixmapMarker: TQ3GeometryObject; yOffset: LONGINT): TQ3Status; C;
  714. FUNCTION Q3PixmapMarker_GetPixmap(pixmapMarker: TQ3GeometryObject; VAR pixmap: TQ3StoragePixmap): TQ3Status; C;
  715. FUNCTION Q3PixmapMarker_SetPixmap(pixmapMarker: TQ3GeometryObject; {CONST}VAR pixmap: TQ3StoragePixmap): TQ3Status; C;
  716.  
  717.  
  718.  
  719. {*****************************************************************************
  720.  **                                                                             **
  721.  **                        Point Data Structure Definitions                     **
  722.  **                                                                             **
  723.  ****************************************************************************}
  724.  
  725. TYPE
  726.     TQ3PointDataPtr = ^TQ3PointData;
  727.     TQ3PointData = RECORD
  728.         point:                    TQ3Point3D;
  729.         pointAttributeSet:        TQ3AttributeSet;
  730.     END;
  731.  
  732. {*****************************************************************************
  733.  **                                                                             **
  734.  **                                Point Routines                                 **
  735.  **                                                                             **
  736.  ****************************************************************************}
  737. FUNCTION Q3Point_New({CONST}VAR pointData: TQ3PointData): TQ3GeometryObject; C;
  738. FUNCTION Q3Point_Submit({CONST}VAR pointData: TQ3PointData; view: TQ3ViewObject): TQ3Status; C;
  739. FUNCTION Q3Point_GetData(point: TQ3GeometryObject; VAR pointData: TQ3PointData): TQ3Status; C;
  740. FUNCTION Q3Point_SetData(point: TQ3GeometryObject; {CONST}VAR pointData: TQ3PointData): TQ3Status; C;
  741. FUNCTION Q3Point_EmptyData(VAR pointData: TQ3PointData): TQ3Status; C;
  742. FUNCTION Q3Point_SetPosition(point: TQ3GeometryObject; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  743. FUNCTION Q3Point_GetPosition(point: TQ3GeometryObject; VAR position: TQ3Point3D): TQ3Status; C;
  744.  
  745.  
  746.  
  747. {*****************************************************************************
  748.  **                                                                             **
  749.  **                        Polygon Data Structure Definitions                     **
  750.  **                                                                             **
  751.  ****************************************************************************}
  752.  
  753. TYPE
  754.     TQ3PolygonDataPtr = ^TQ3PolygonData;
  755.     TQ3PolygonData = RECORD
  756.         numVertices:            LONGINT;
  757.         vertices:                TQ3Vertex3DPtr;
  758.         polygonAttributeSet:    TQ3AttributeSet;
  759.     END;
  760.  
  761. {*****************************************************************************
  762.  **                                                                             **
  763.  **                            Polygon Routines                                 **
  764.  **                                                                             **
  765.  ****************************************************************************}
  766. FUNCTION Q3Polygon_New({CONST}VAR polygonData: TQ3PolygonData): TQ3GeometryObject; C;
  767. FUNCTION Q3Polygon_Submit({CONST}VAR polygonData: TQ3PolygonData; view: TQ3ViewObject): TQ3Status; C;
  768. FUNCTION Q3Polygon_SetData(polygon: TQ3GeometryObject; {CONST}VAR polygonData: TQ3PolygonData): TQ3Status; C;
  769. FUNCTION Q3Polygon_GetData(polygon: TQ3GeometryObject; VAR polygonData: TQ3PolygonData): TQ3Status; C;
  770. FUNCTION Q3Polygon_EmptyData(VAR polygonData: TQ3PolygonData): TQ3Status; C;
  771. FUNCTION Q3Polygon_GetVertexPosition(polygon: TQ3GeometryObject; index: LONGINT; VAR point: TQ3Point3D): TQ3Status; C;
  772. FUNCTION Q3Polygon_SetVertexPosition(polygon: TQ3GeometryObject; index: LONGINT; {CONST}VAR point: TQ3Point3D): TQ3Status; C;
  773. FUNCTION Q3Polygon_GetVertexAttributeSet(polygon: TQ3GeometryObject; index: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  774. FUNCTION Q3Polygon_SetVertexAttributeSet(polygon: TQ3GeometryObject; index: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  775.  
  776.  
  777.  
  778. {*****************************************************************************
  779.  **                                                                             **
  780.  **                        Polyhedron Data Structure Definitions                 **
  781.  **                                                                             **
  782.  ****************************************************************************}
  783.  
  784. TYPE
  785.     TQ3PolyhedronEdgeMasks         = LONGINT;
  786. CONST
  787.     kQ3PolyhedronEdgeNone        = {TQ3PolyhedronEdgeMasks}0;
  788.     kQ3PolyhedronEdge01            = {TQ3PolyhedronEdgeMasks}$01;
  789.     kQ3PolyhedronEdge12            = {TQ3PolyhedronEdgeMasks}$02;
  790.     kQ3PolyhedronEdge20            = {TQ3PolyhedronEdgeMasks}$04;
  791.     kQ3PolyhedronEdgeAll        = {TQ3PolyhedronEdgeMasks}$07;
  792.  
  793.  
  794. TYPE
  795.     TQ3PolyhedronEdge                    = LONGINT;
  796.     TQ3PolyhedronEdgeDataPtr = ^TQ3PolyhedronEdgeData;
  797.     TQ3PolyhedronEdgeData = RECORD
  798.         vertexIndices:            ARRAY [0..1] OF LONGINT;
  799.         triangleIndices:        ARRAY [0..1] OF LONGINT;
  800.         edgeAttributeSet:        TQ3AttributeSet;
  801.     END;
  802.  
  803.     TQ3PolyhedronTriangleDataPtr = ^TQ3PolyhedronTriangleData;
  804.     TQ3PolyhedronTriangleData = RECORD
  805.         vertexIndices:            ARRAY [0..2] OF LONGINT;
  806.         edgeFlag:                TQ3PolyhedronEdge;
  807.         triangleAttributeSet:    TQ3AttributeSet;
  808.     END;
  809.  
  810.     TQ3PolyhedronDataPtr = ^TQ3PolyhedronData;
  811.     TQ3PolyhedronData = RECORD
  812.         numVertices:            LONGINT;
  813.         vertices:                TQ3Vertex3DPtr;
  814.         numEdges:                LONGINT;
  815.         edges:                    TQ3PolyhedronEdgeDataPtr;
  816.         numTriangles:            LONGINT;
  817.         triangles:                TQ3PolyhedronTriangleDataPtr;
  818.         polyhedronAttributeSet:    TQ3AttributeSet;
  819.     END;
  820.  
  821. {*****************************************************************************
  822.  **                                                                             **
  823.  **                                Polyhedron Routines                             **
  824.  **                                                                             **
  825.  ****************************************************************************}
  826. FUNCTION Q3Polyhedron_New({CONST}VAR polyhedronData: TQ3PolyhedronData): TQ3GeometryObject; C;
  827. FUNCTION Q3Polyhedron_Submit({CONST}VAR polyhedronData: TQ3PolyhedronData; view: TQ3ViewObject): TQ3Status; C;
  828. FUNCTION Q3Polyhedron_SetData(polyhedron: TQ3GeometryObject; {CONST}VAR polyhedronData: TQ3PolyhedronData): TQ3Status; C;
  829. FUNCTION Q3Polyhedron_GetData(polyhedron: TQ3GeometryObject; VAR polyhedronData: TQ3PolyhedronData): TQ3Status; C;
  830. FUNCTION Q3Polyhedron_EmptyData(VAR polyhedronData: TQ3PolyhedronData): TQ3Status; C;
  831. FUNCTION Q3Polyhedron_SetVertexPosition(polyhedron: TQ3GeometryObject; index: LONGINT; {CONST}VAR point: TQ3Point3D): TQ3Status; C;
  832. FUNCTION Q3Polyhedron_GetVertexPosition(polyhedron: TQ3GeometryObject; index: LONGINT; VAR point: TQ3Point3D): TQ3Status; C;
  833. FUNCTION Q3Polyhedron_SetVertexAttributeSet(polyhedron: TQ3GeometryObject; index: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  834. FUNCTION Q3Polyhedron_GetVertexAttributeSet(polyhedron: TQ3GeometryObject; index: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  835. FUNCTION Q3Polyhedron_GetTriangleData(polyhedron: TQ3GeometryObject; triangleIndex: LONGINT; VAR triangleData: TQ3PolyhedronTriangleData): TQ3Status; C;
  836. FUNCTION Q3Polyhedron_SetTriangleData(polyhedron: TQ3GeometryObject; triangleIndex: LONGINT; {CONST}VAR triangleData: TQ3PolyhedronTriangleData): TQ3Status; C;
  837. FUNCTION Q3Polyhedron_GetEdgeData(polyhedron: TQ3GeometryObject; edgeIndex: LONGINT; VAR edgeData: TQ3PolyhedronEdgeData): TQ3Status; C;
  838. FUNCTION Q3Polyhedron_SetEdgeData(polyhedron: TQ3GeometryObject; edgeIndex: LONGINT; {CONST}VAR edgeData: TQ3PolyhedronEdgeData): TQ3Status; C;
  839.  
  840.  
  841.  
  842. {*****************************************************************************
  843.  **                                                                             **
  844.  **                        PolyLine Data Structure Definitions                     **
  845.  **                                                                             **
  846.  ****************************************************************************}
  847.  
  848. TYPE
  849.     TQ3PolyLineDataPtr = ^TQ3PolyLineData;
  850.     TQ3PolyLineData = RECORD
  851.         numVertices:            LONGINT;
  852.         vertices:                TQ3Vertex3DPtr;
  853.         segmentAttributeSet:    TQ3AttributeSetPtr;
  854.         polyLineAttributeSet:    TQ3AttributeSet;
  855.     END;
  856.  
  857. {*****************************************************************************
  858.  **                                                                             **
  859.  **                            PolyLine Routines                                 **
  860.  **                                                                             **
  861.  ****************************************************************************}
  862. FUNCTION Q3PolyLine_New({CONST}VAR polylineData: TQ3PolyLineData): TQ3GeometryObject; C;
  863. FUNCTION Q3PolyLine_Submit({CONST}VAR polyLineData: TQ3PolyLineData; view: TQ3ViewObject): TQ3Status; C;
  864. FUNCTION Q3PolyLine_SetData(polyLine: TQ3GeometryObject; {CONST}VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  865. FUNCTION Q3PolyLine_GetData(polyLine: TQ3GeometryObject; VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  866. FUNCTION Q3PolyLine_EmptyData(VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  867. FUNCTION Q3PolyLine_GetVertexPosition(polyLine: TQ3GeometryObject; index: LONGINT; VAR position: TQ3Point3D): TQ3Status; C;
  868. FUNCTION Q3PolyLine_SetVertexPosition(polyLine: TQ3GeometryObject; index: LONGINT; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  869. FUNCTION Q3PolyLine_GetVertexAttributeSet(polyLine: TQ3GeometryObject; index: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  870. FUNCTION Q3PolyLine_SetVertexAttributeSet(polyLine: TQ3GeometryObject; index: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  871. FUNCTION Q3PolyLine_GetSegmentAttributeSet(polyLine: TQ3GeometryObject; index: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  872. FUNCTION Q3PolyLine_SetSegmentAttributeSet(polyLine: TQ3GeometryObject; index: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  873.  
  874.  
  875.  
  876.  
  877. {*****************************************************************************
  878.  **                                                                             **
  879.  **                        Torus Data Structure Definitions                     **
  880.  **                                                                             **
  881.  ****************************************************************************}
  882.  
  883. TYPE
  884.     TQ3TorusDataPtr = ^TQ3TorusData;
  885.     TQ3TorusData = RECORD
  886.         origin:                    TQ3Point3D;
  887.         orientation:            TQ3Vector3D;
  888.         majorRadius:            TQ3Vector3D;
  889.         minorRadius:            TQ3Vector3D;
  890.         ratio:                    Single;
  891.         uMin:                    Single;
  892.         uMax:                    Single;
  893.         vMin:                    Single;
  894.         vMax:                    Single;
  895.         caps:                    TQ3EndCap;
  896.         interiorAttributeSet:    TQ3AttributeSet;
  897.         torusAttributeSet:        TQ3AttributeSet;
  898.     END;
  899.  
  900. {*****************************************************************************
  901.  **                                                                             **
  902.  **                                Torus Routines                                 **
  903.  **                                                                             **
  904.  ****************************************************************************}
  905. FUNCTION Q3Torus_New({CONST}VAR torusData: TQ3TorusData): TQ3GeometryObject; C;
  906. FUNCTION Q3Torus_Submit({CONST}VAR torusData: TQ3TorusData; view: TQ3ViewObject): TQ3Status; C;
  907. FUNCTION Q3Torus_SetData(torus: TQ3GeometryObject; {CONST}VAR torusData: TQ3TorusData): TQ3Status; C;
  908. FUNCTION Q3Torus_GetData(torus: TQ3GeometryObject; VAR torusData: TQ3TorusData): TQ3Status; C;
  909. FUNCTION Q3Torus_SetOrigin(torus: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  910. FUNCTION Q3Torus_SetOrientation(torus: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  911. FUNCTION Q3Torus_SetMajorRadius(torus: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  912. FUNCTION Q3Torus_SetMinorRadius(torus: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  913. FUNCTION Q3Torus_SetRatio(torus: TQ3GeometryObject; ratio: Single): TQ3Status; C;
  914. FUNCTION Q3Torus_GetOrigin(torus: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  915. FUNCTION Q3Torus_GetOrientation(torus: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  916. FUNCTION Q3Torus_GetMajorRadius(torus: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  917. FUNCTION Q3Torus_GetMinorRadius(torus: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  918. FUNCTION Q3Torus_GetRatio(torus: TQ3GeometryObject; VAR ratio: Single): TQ3Status; C;
  919. FUNCTION Q3Torus_EmptyData(VAR torusData: TQ3TorusData): TQ3Status; C;
  920.  
  921.  
  922.  
  923. {*****************************************************************************
  924.  **                                                                             **
  925.  **                        Triangle Data Structure Definitions                     **
  926.  **                                                                             **
  927.  ****************************************************************************}
  928.  
  929. TYPE
  930.     TQ3TriangleDataPtr = ^TQ3TriangleData;
  931.     TQ3TriangleData = RECORD
  932.         vertices:                ARRAY [0..2] OF TQ3Vertex3D;
  933.         triangleAttributeSet:    TQ3AttributeSet;
  934.     END;
  935.  
  936. {*****************************************************************************
  937.  **                                                                             **
  938.  **                            Triangle Routines                                 **
  939.  **                                                                             **
  940.  ****************************************************************************}
  941. FUNCTION Q3Triangle_New({CONST}VAR triangleData: TQ3TriangleData): TQ3GeometryObject; C;
  942. FUNCTION Q3Triangle_Submit({CONST}VAR triangleData: TQ3TriangleData; view: TQ3ViewObject): TQ3Status; C;
  943. FUNCTION Q3Triangle_SetData(triangle: TQ3GeometryObject; {CONST}VAR triangleData: TQ3TriangleData): TQ3Status; C;
  944. FUNCTION Q3Triangle_GetData(triangle: TQ3GeometryObject; VAR triangleData: TQ3TriangleData): TQ3Status; C;
  945. FUNCTION Q3Triangle_EmptyData(VAR triangleData: TQ3TriangleData): TQ3Status; C;
  946. FUNCTION Q3Triangle_GetVertexPosition(triangle: TQ3GeometryObject; index: LONGINT; VAR point: TQ3Point3D): TQ3Status; C;
  947. FUNCTION Q3Triangle_SetVertexPosition(triangle: TQ3GeometryObject; index: LONGINT; {CONST}VAR point: TQ3Point3D): TQ3Status; C;
  948. FUNCTION Q3Triangle_GetVertexAttributeSet(triangle: TQ3GeometryObject; index: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  949. FUNCTION Q3Triangle_SetVertexAttributeSet(triangle: TQ3GeometryObject; index: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  950.  
  951.  
  952.  
  953. {*****************************************************************************
  954.  **                                                                             **
  955.  **                        TriGrid Data Structure Definitions                     **
  956.  **                                                                             **
  957.  ****************************************************************************}
  958.  
  959. TYPE
  960.     TQ3TriGridDataPtr = ^TQ3TriGridData;
  961.     TQ3TriGridData = RECORD
  962.         numRows:                LONGINT;
  963.         numColumns:                LONGINT;
  964.         vertices:                TQ3Vertex3DPtr;
  965.         facetAttributeSet:        TQ3AttributeSetPtr;
  966.         triGridAttributeSet:    TQ3AttributeSet;
  967.     END;
  968.  
  969. {*****************************************************************************
  970.  **                                                                             **
  971.  **                                TriGrid Routines                             **
  972.  **                                                                             **
  973.  ****************************************************************************}
  974. FUNCTION Q3TriGrid_New({CONST}VAR triGridData: TQ3TriGridData): TQ3GeometryObject; C;
  975. FUNCTION Q3TriGrid_Submit({CONST}VAR triGridData: TQ3TriGridData; view: TQ3ViewObject): TQ3Status; C;
  976. FUNCTION Q3TriGrid_SetData(triGrid: TQ3GeometryObject; {CONST}VAR triGridData: TQ3TriGridData): TQ3Status; C;
  977. FUNCTION Q3TriGrid_GetData(triGrid: TQ3GeometryObject; VAR triGridData: TQ3TriGridData): TQ3Status; C;
  978. FUNCTION Q3TriGrid_EmptyData(VAR triGridData: TQ3TriGridData): TQ3Status; C;
  979. FUNCTION Q3TriGrid_GetVertexPosition(triGrid: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; VAR position: TQ3Point3D): TQ3Status; C;
  980. FUNCTION Q3TriGrid_SetVertexPosition(triGrid: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  981. FUNCTION Q3TriGrid_GetVertexAttributeSet(triGrid: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  982. FUNCTION Q3TriGrid_SetVertexAttributeSet(triGrid: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  983. FUNCTION Q3TriGrid_GetFacetAttributeSet(triGrid: TQ3GeometryObject; faceIndex: LONGINT; VAR facetAttributeSet: TQ3AttributeSet): TQ3Status; C;
  984. FUNCTION Q3TriGrid_SetFacetAttributeSet(triGrid: TQ3GeometryObject; faceIndex: LONGINT; facetAttributeSet: TQ3AttributeSet): TQ3Status; C;
  985.  
  986.  
  987.  
  988. {*****************************************************************************
  989.  **                                                                             **
  990.  **                        TriMesh Data Structure Definitions                     **
  991.  **                                                                             **
  992.  ****************************************************************************}
  993.  
  994. TYPE
  995.     TQ3TriMeshTriangleDataPtr = ^TQ3TriMeshTriangleData;
  996.     TQ3TriMeshTriangleData = RECORD
  997.         pointIndices:            ARRAY [0..2] OF LONGINT;
  998.     END;
  999.  
  1000.     TQ3TriMeshEdgeDataPtr = ^TQ3TriMeshEdgeData;
  1001.     TQ3TriMeshEdgeData = RECORD
  1002.         pointIndices:            ARRAY [0..1] OF LONGINT;
  1003.         triangleIndices:        ARRAY [0..1] OF LONGINT;
  1004.     END;
  1005.  
  1006.     TQ3TriMeshAttributeDataPtr = ^TQ3TriMeshAttributeData;
  1007.     TQ3TriMeshAttributeData = RECORD
  1008.         attributeType:            TQ3AttributeType;                        {  The type of attribute           }
  1009.         data:                    Ptr;                                    {  Pointer to the contiguous      }
  1010.                                                                         {  attribute data.                  }
  1011.         attributeUseArray:        CStringPtr;                                {  This is only used with custom  }
  1012.                                                                         {  attributes                       }
  1013.     END;
  1014.  
  1015.     TQ3TriMeshDataPtr = ^TQ3TriMeshData;
  1016.     TQ3TriMeshData = RECORD
  1017.         triMeshAttributeSet:    TQ3AttributeSet;
  1018.         numTriangles:            LONGINT;
  1019.         triangles:                TQ3TriMeshTriangleDataPtr;
  1020.         numTriangleAttributeTypes: LONGINT;
  1021.         triangleAttributeTypes:    TQ3TriMeshAttributeDataPtr;
  1022.         numEdges:                LONGINT;
  1023.         edges:                    TQ3TriMeshEdgeDataPtr;
  1024.         numEdgeAttributeTypes:    LONGINT;
  1025.         edgeAttributeTypes:        TQ3TriMeshAttributeDataPtr;
  1026.         numPoints:                LONGINT;
  1027.         points:                    TQ3Point3DPtr;
  1028.         numVertexAttributeTypes: LONGINT;
  1029.         vertexAttributeTypes:    TQ3TriMeshAttributeDataPtr;
  1030.         bBox:                    TQ3BoundingBox;
  1031.     END;
  1032.  
  1033. {*****************************************************************************
  1034.  **                                                                             **
  1035.  **                            TriMesh Routines                                 **
  1036.  **                                                                             **
  1037.  ****************************************************************************}
  1038. FUNCTION Q3TriMesh_New({CONST}VAR triMeshData: TQ3TriMeshData): TQ3GeometryObject; C;
  1039. FUNCTION Q3TriMesh_Submit({CONST}VAR triMeshData: TQ3TriMeshData; view: TQ3ViewObject): TQ3Status; C;
  1040. FUNCTION Q3TriMesh_SetData(triMesh: TQ3GeometryObject; {CONST}VAR triMeshData: TQ3TriMeshData): TQ3Status; C;
  1041. FUNCTION Q3TriMesh_GetData(triMesh: TQ3GeometryObject; VAR triMeshData: TQ3TriMeshData): TQ3Status; C;
  1042. FUNCTION Q3TriMesh_EmptyData(VAR triMeshData: TQ3TriMeshData): TQ3Status; C;
  1043.  
  1044.  
  1045.  
  1046. {$ALIGN RESET}
  1047. {$POP}
  1048.  
  1049. {$SETC UsingIncludes := QD3DGeometryIncludes}
  1050.  
  1051. {$ENDC} {__QD3DGEOMETRY__}
  1052.  
  1053. {$IFC NOT UsingIncludes}
  1054.  END.
  1055. {$ENDC}
  1056.